# []    列表
# ()    元组
# set()
# {}  字典 dict

# 字典以键值对的形式保存数据
# 键值对  键通常是一个字符串，值的类型没有限制
# 键key      值value
# "yyds"     "永远单身"
# "u1s1"     "有一说一"
# "dddd"     "懂得都懂"
# "dbq"      "对不起"
# "ooo"      "out of office"
# 键是唯一的，如果添加重复键值对，以最后一次添加的键值对为准

# 定义字典
# 字典名 = {
#     键:值,
#     键:值,
#     ...
# }

map = {
    "yyds": "永远单身",
    "u1s1": "有一说一",
    "dddd": "懂得都懂",
    "dbq": "对不起",
    "ooo": "out of office",
    "yyds": "永远滴神",
}
print(map)
# 根据键获取值，如果键不存在，返回None
print(map.get("dddd"))
print(map['dddd'])

# 通过=给某个键赋值
map['ooo'] = "xxxxx"
print(map['ooo'])
# 获取键的集合
print(map.keys())
# 获取值的集合
print(map.values())
# 获取键值对的集合
print(map.items())
# 根据键删除键值对，返回被删除的值
print(map.pop("dbq"))

# 遍历每个键值对

# 遍历键，根据键获取值
for key in map.keys():
    print(key, map[key], map.get(key))

# 遍历键值对
for key, value in map.items():
    print(key, value)

# enumerate
for index, item in enumerate(map.items()):
    print(index, item)

# 使用字典保存几个用户的信息
# 编号作为键，值包含：用户名、密码、职业
user_map = {
    "1001": {
        "name": "Tom",
        "pwd": "123123",
        "job": "律师"
    },
    "1002": {
        "name": "Jerry",
        "pwd": "123123",
        "job": "教师"
    },
    "1003": {
        "name": "王海",
        "pwd": "123123",
        "job": "法师"
    }
}
# 通过字典[键]=值的方式添加一组新的键值对，前提键不存在
# 注册 输入编号和其他信息
id = input("请输入编号")
# 判断键是否存在
if id not in user_map.keys():
    # 字典[编号]={}方式添加
    user_map[id] = {
        "name": input("请输入姓名"),
        "pwd": input("请输入密码"),
        "job": input("请输入职业")
    }
    print("注册成功")
else:
    print("该编号已存在,请直接登录")

# 登录  用编号和密码登录
# 判断键是否存在，如果存在，获取其的pwd的属性，判断密码是否正确
# 如果判断某个对象是否为None，可以将"if 对象==None"写为 "if not 对象"
id = input("请输入用户编号")
user = user_map.get(id)
if not user:
    print("该用户不存在")
else:
    if input("请输入密码") == user['pwd']:
        print(f"欢迎{user['job']}{user['name']}")
    else:
        print("密码错误")

